package com.neuedu.corejava.ch5;

/**
 * <pre>
 * 文档注释：用于生成api文档或在编码时，可以进行使用提示
 * 文档注释支持使用部分HTML网页标签和CSS样式
 * 
 * <pre>
 * 
 * java类中方法的定义：
 * 1、实例方法与类方法
 * 
 * 2、有参方法与无参方法
 * 
 * 3、有返回值与无返回值方法
 * 
 * 4、方法定义与使用/调用
 * 
 * 5、基本数据类型与引用数据类型
 */
public class MethodsClass {

	// 设计一个方法接受两个整数进行加法计算并返回和
	public int add(int a, int b) {
		int sum = a + b;
//		if(a==0 && b==0){
//			//方法如有多个分支，每个分支都要有返回值
//			return 0;
//		}else {	
//			return sum;
//		}
		//在方法定义时如果声明了返回值类型，则必须在方法体中使用return语句返回一个类型匹配的值
		if(a==0 && b==0){
			return -1; //当方法内部需要返回不同值时，可以使用多个retuen返回不同的值
		}else {	
			sum = a+b;
		}
		return sum;
	}
	
	//方法可以没有参数和返回值；当方法没有返回值时，需要使用void进行声明
	//void关键词表示没有数据类型
	//private是访问修饰符号，表示私有的意思，使用private修饰的实例变量或方法只能在该类内部使用
	//访问修饰符号：public公有的，protected受保护，默认（不写），private私有
	private void printColor(int count,String color){}
	//public    表示在所有范围都可以访问
	//protected 表示在同一个类中，同一个package包中，不同package子类中可以访问
	//默认（不写）   表示在同一个类中，同一个package包中可以访问
	//private   只能在本类中访问
	
	protected void printColor(String color){
		System.out.println(color);
	}
	//方法的重载：同一个类中，方法名相同、参数列表不同（参数个数不同、类型不同，顺序不同），与访问修饰符号和返回值类型无关
	//方法的重载方便进行功能维护和扩展，提供程序的课维护性和可扩展性
	public void printColor(int count){
		System.out.println();
	}
	void printColor(String color,int count){
		for (int i = 0; i < count; i++) {
			System.out.println(color);
		}				
	 }
	
	//使用static修饰的方法叫类方法或静态方法，可以通过类名和方法名进行调用，如果在同一个类中可以直接通过方法名调用，
	public static void printColor(char color){}
	                              //在定义方法时参数列表中的参数叫形式参数
	//没有使用static修饰的方法称为实例方法，需通过实例对象进行调用
	public static void main(String[] args) {
		//mClass是一个实例变量的引用，经常把它称为类实例对象
		MethodsClass mClass = new MethodsClass();
		mClass.printColor(1);
		mClass.printColor("蓝色");
		mClass.printColor(2, "蓝色");
		mClass.printColor("蓝色", 2);//方法调用时实际传递的参数，保存有实际数据的参数叫实际参数
		//方法重载后，调用方法时，jvm能够根据参数类型列表自动识别并调用不同的方法
	}
	
}
